package com.hongyi.mapper;

import com.hongyi.dto.DepDto;
import com.hongyi.pojo.Dep;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author hongyi
 * @date 2023/11/22 21:08
 */

@Mapper
public interface DepMapper {


    public List<Dep> findDepDto(DepDto depDto);

    /**
     * 这种写法是不对的
     *
     * @param depDto
     * @return
     */
    public List<Dep> findDepDto5(DepDto depDto);

    /**
     * 起别名
     *
     * @param depDto
     * @return
     */
    public List<Dep> findDepDto1(@Param("deptDto") DepDto depDto);

    /**
     * 参数索引 形参
     *
     * @param name1
     * @param address1
     * @return
     */
    public List<Dep> findDepDto2(String name1, String address1);

    /**
     * 别名写法
     *
     * @param name1
     * @param address1
     * @return
     */
    public List<Dep> findDepDto3(@Param("name1") String name1, @Param("address2") String address1);


    /**
     * 参数索引
     *
     * @param name
     * @param address
     * @return
     */
    public List<Dep> findDepDto4(String name, String address);


    /**
     * Map层传递参数
     *
     * @param params
     * @return
     */
    public List<Dep> getNameAndAddress(Map<String, Object> params);


    public List<Dep> getDeptIds(Long[] ids);

    public List<Dep> getDeptIds1(@Param("ids") Long[] ids);

    public List<Dep> getDeptIds2(List<Long> ids);

    /**
     * getDeptIds3 在xml文档中书写的不对
     *
     * @param ids
     * @return
     */
    public List<Dep> getDeptIds3(@Param("ids") List<Long> ids);

    public List<Dep> getDeptIds4(@Param("ids") List<Long> ids);


    /**
     * foreach 第三种方式 map
     *
     * @param ids
     * @return
     */
    public List<Dep> getDeptIds5(@Param("ids") Map<String, Long> ids);

    public List<Dep> getDeptIds6(@Param("ids") Map<String, String> ids);

    public List<Dep> getDeptIds7(@Param("ids") Map<String, List<Long>> ids);

    public void add(Dep dep);

    public void update(Dep dep);

    public void delete(int id);

    public Dep findById(int id);

    public List<Dep> findALl();

    public List<Dep> deptByIdPersonId(int id);

    // 分页
    public List<Dep> selectPage(@Param("begin") int begin, @Param("size") int size);

    /**
     * 查询总记录数
     *
     * @return
     */
    int selectTotalCount();

    // 条件总数
    int selectTotalCount01(String name);

    // 条件分页
    public List<Dep> selectPage01(@Param("name") String name, @Param("begin") int begin, @Param("size") int size);

    Map<String, Object> getMapId(@Param("id") Long id);

    Map<String, Object> getMapDep(Map<String, Object> params);
}

